﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Text.RegularExpressions;

namespace Prueba
{
    public partial class DatosLote : Form
    {
        public static String loteModificado = "";
        public static String campo = "";
        public static String lote = "";
        public static String latitud = "";
        public static String longitud = "";
        public static String area = "";
        public static String humedad = "";
        public static String fecha = "";
        public static String estado = "";

        public DatosLote()
        {
            InitializeComponent();
        }

        private void tsbtnLimpiar_Click(object sender, EventArgs e)
        {
            limpiarFormulario();
        }

        private void limpiarFormulario()
        {
            txtCampo.Text = "";
            txtHumedad.Text = "";
            txtNombre.Text = "";
            txtHumedad.Text = "";
            txtLatitud.Text = "";
            txtLongitud.Text = "";
            txtArea.Text = "";
            dtpControl.ResetText();
        }

        private void DatosLote_Load(object sender, EventArgs e)
        {
            //carga los valores iniciales dependiendo si es ingreso o modificacion
            try
            {
                cmbEstado.Items.Add("Sembrado");
                cmbEstado.Items.Add("Cosechado");
                txtArea.Text = area;
                txtCampo.Text = campo;
                txtHumedad.Text = humedad;
                txtLatitud.Text = latitud;
                txtLongitud.Text = longitud;
                txtNombre.Text = lote;
                if (estado.Equals(""))
                {
                    cmbEstado.Text = "Sembrado";
                }
                else
                {
                    cmbEstado.Text = estado;
                }
            }
            catch 
            {
                MessageBox.Show("Error al intentar cargar los datos!!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }

        }

        private Boolean verificarDatos(String campo, String lote, String latitud, String longitud, String area, String humedad, String estado)
        {
            Boolean verifica = false;
            string expresionDecimal = @"^(\d|-)?(\d)*\.?\d*$";
            string letras = @"^[a-zA-Z]*$";
            string letrasEspacio = @"^[a-zA-Z\s]*$";
            try
            {
                if (campo.Trim().Equals("") || lote.Trim().Equals("") || estado.Trim().Equals("") || latitud.Trim().Equals("") || longitud.Trim().Equals("") || area.Trim().Equals("") || humedad.Trim().Equals(""))
                {
                    verifica = true;
                }
                else if (!Regex.IsMatch(latitud, expresionDecimal) || !Regex.IsMatch(longitud, expresionDecimal)
                         || !Regex.IsMatch(area, expresionDecimal))
                {
                    verifica = true;

                }
                else if (!Regex.IsMatch(estado, letras) || !Regex.IsMatch(campo, letrasEspacio))
                {
                    verifica = true;
                }
            }
            catch
            {
                verifica = true;
            
            }
            return verifica;
        }

        private void tsbtnGuardar_Click(object sender, EventArgs e)
        {
            //guarda los datos iniciales dependiendo si es ingreso o modificacion
            try
            {
                bool verificado = verificarDatos(txtCampo.Text, txtNombre.Text, txtLatitud.Text, txtLongitud.Text, txtArea.Text, txtHumedad.Text, cmbEstado.Text);

                if (verificado)
                {
                    tslblError.Text = "Error en el ingreso de los datos!!";
                }
                else
                {
                    tslblError.Text = "";
                    Double latitud = Convert.ToDouble(txtLatitud.Text);
                    Double longitud = Convert.ToDouble(txtLongitud.Text);
                    Double area = Convert.ToDouble(txtArea.Text);
                    Double humedad = Convert.ToDouble(txtHumedad.Text);
                    if (loteModificado.Equals(""))
                    {
                        bool ingresado = DAOLotes.saveLote(txtCampo.Text, txtNombre.Text, latitud, longitud, area, humedad, dtpControl.Value, cmbEstado.Text);
                        if (ingresado)
                        {
                            limpiarFormulario();
                            tslblError.Text = "Datos cargardos correctamente!!";

                        }

                        else
                        {
                            tslblError.Text = "Error al intentar cargar los datos!!";
                        }

                    }
                    else
                    {
                        bool modificado = DAOLotes.updateLote(txtCampo.Text, txtNombre.Text, latitud, longitud, area, humedad, dtpControl.Value, cmbEstado.Text, loteModificado);

                        if (modificado)
                        {
                            limpiarFormulario();
                            tslblError.Text = "Datos modificados correctamente!!";

                        }

                        else
                        {
                            tslblError.Text = "Error al intentar modificar los datos!!";

                        }
                    }

                }
            }
            catch 
            {
                tslblError.Text = "Error al intentar cargar los datos!!";
            }
        }

        private void Ayuda_Click(object sender, EventArgs e)
        {
            //abre la ayuda dependiendo si es ingreso o modificacion
            if (loteModificado.Equals(""))
            {
                Form existe = Application.OpenForms.OfType<Form>().Where(pre => pre.Name == "Ayuda").SingleOrDefault<Form>();

                if (existe != null)
                {

                    existe.WindowState = FormWindowState.Normal;

                }
                else
                {
                    Ayuda ayuda = new Ayuda();
                    ayuda.Text = "Ayuda Ingreso de Datos";
                    ayuda.Show();
                }
            }
            else
            {
                Form existe = Application.OpenForms.OfType<Form>().Where(pre => pre.Name == "Ayuda").SingleOrDefault<Form>();

                if (existe != null)
                {

                    existe.WindowState = FormWindowState.Normal;

                }
                else
                {
                    Ayuda ayuda = new Ayuda();
                    ayuda.Text = "Ayuda Modificación de Datos";
                    ayuda.Show();
                }
            }
        }
    }
}
